package org.noote.libs.assistant.analyse.grammaire;

import org.noote.libs.assistant.analyse.Element;
import org.noote.libs.assistant.analyse.Element_Ponctuation;
import org.noote.libs.assistant.analyse.Grammaire;
import org.noote.libs.assistant.analyse.Liste_Elements;
import org.noote.libs.assistant.analyse.Liste_Phrases;
import org.noote.libs.assistant.analyse.Phrase;

public class Grammaire_FR_FR implements Grammaire {

	@Override
	public int extrairePhrases(Liste_Elements elements, Liste_Phrases phrases)
	{
		int iCount=0;
		int iElementsCount = elements.size();

		if(iElementsCount>0)
		{
			Phrase phrase = new Phrase();
			
			for(int iE=0; iE<iElementsCount; iE++)
			{
				Element elem = elements.get(iE);
				if(elem.getType() == Element.Type.PONCTUATION && elem.getAsPonctuation().getType()==Element_Ponctuation.Type.FINDEPHRASE)
				{
					if(phrase._elements.size() > 0)
					{
						phrase._elements.add(elem);
						phrases.add(phrase);
						phrase = new Phrase();
						iCount++;
					}
				}
				else
				{
					phrase._elements.add(elem);
					
					if(iE==iElementsCount-1 &&
						!(elem.getType() == Element.Type.PONCTUATION && elem.getAsPonctuation().getType()==Element_Ponctuation.Type.FINDEPHRASE))
					{
						// the last element isn't a phrase ended... so assume end phrase :)
						phrases.add(phrase);
						iCount++;
					}
				}
			}
		}
		
		return iCount;
	}

	@Override
	public boolean analyse(Liste_Phrases phrases) {
		for(Phrase p : phrases)
		{
			analyse(p);
		}
		return true;
	}
	
	@Override
	public boolean analyse(Phrase phrase) {

		// TODO !
		
		return true;
	}
}
